package com.ls.server.controller;

import com.ls.server.dto.ChatModelDTO;
import com.ls.server.dto.ChatQueryDTO;
import com.ls.server.service.ChatModelService;
import com.ls.server.vo.ChatModelVO;
import com.ls.server.vo.PageResult;
import com.ls.server.vo.Result;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * AI聊天模型控制器
 */
@RestController
@RequestMapping("/chat/model")
public class ChatModelController {

    private final ChatModelService chatModelService;

    public ChatModelController(ChatModelService chatModelService) {
        this.chatModelService = chatModelService;
    }

    /**
     * 分页查询模型
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    @PostMapping("/page")
    public Result<PageResult<ChatModelVO>> page(@RequestBody ChatQueryDTO queryDTO) {
        return Result.success(chatModelService.page(queryDTO));
    }

    /**
     * 查询所有可用模型
     * @return 模型列表
     */
    @GetMapping("/list")
    public Result<List<ChatModelVO>> listAvailable() {
        return Result.success(chatModelService.listEnabledModels());
    }

    /**
     * 根据ID查询模型
     * @param id 模型ID
     * @return 模型信息
     */
    @GetMapping("/get/{id}")
    public Result<ChatModelVO> getById(@PathVariable Long id) {
        return Result.success(chatModelService.getModelById(id));
    }

    /**
     * 新增模型
     * @param dto 模型信息
     * @return 操作结果
     */
    @PostMapping
    public Result<Boolean> save(@RequestBody ChatModelDTO dto) {
        return Result.success(chatModelService.createModel(dto));
    }

    /**
     * 修改模型
     * @param dto 模型信息
     * @return 操作结果
     */
    @PutMapping
    public Result<Boolean> update(@RequestBody ChatModelDTO dto) {
        return Result.success(chatModelService.updateModel(dto));
    }

    /**
     * 删除模型
     * @param id 模型ID
     * @return 操作结果
     */
    @DeleteMapping("/{id}")
    public Result<Boolean> delete(@PathVariable Long id) {
        return Result.success(chatModelService.delete(id));
    }
} 